<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>


<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">


<title></title>
</head><body>
<h1>Puppy filenames</h1>
<br>
The main Puppy files are:<br>
<br>
<span style="font-style: italic;">vmlinuz, initrd.gz, puppy.sfs, zdrv.sfs</span><br>
<br>
However, traditionally, versioning is put into the last two, for example:<br>
<br>
<span style="font-style: italic;">vmlinuz, initrd.gz, pup_431.sfs, zp431335.sfs</span><br>
<br>
...those last two names are intended to be unique for that build of Puppy, so they can be found at bootup.<br>
<br>
<h2>id-string</h2>
The files vmlinuz and the two .sfs files shown above now have a 16-byte id-string appended to the files. <br>
<br>
The first list is simplified names, with no versioning in the
filenames, however, the 'init' boot script can read the id-string and
uniquely identify the files.<br>
<br>
Having the id-string appended to vmlinuz is important for the 'init'
boot script as it enables to find the boot partition (and path).<br>
<br>
For the simplified .sfs names, again the id-string enables the correct files to be found.<br>
<br>
For the traditional names, the id-string is used to find vmlinuz and
hence the boot partition (and path), however the .sfs files are found in the
traditional way, by their filenames. In other words, the appended
id-string is not required, and need not be there.<br>
<br>
<h2>Compatibility</h2>
There are may be some 3rd-party scripts that expect the traditional
naming of the .sfs files, for example a CD-remaster program. So, for
maximum compatibility, choose the traditional names.<br>
<br>
It may also be argued that it is easier for the user to recognise the .sfs files if the filenames show versioned information.<br>
<br>
There is one compatibility issue with the 'puppy.sfs' file. Some builds
of Puppy, from Puppy 4.3.1 up to Lucid 5.1, name this file as
'pup-431.sfs' or 'lucid-510.sfs', however, the very latest Woof build
system has returned to an underscore instead of a hyphen for the
traditional name, so for example a recent build of Wary Puppy has
'wary_090.sfs'<br>
<br>
Note, the reason for changing the '-' back to '_' is the original msdos f.s. canot handle '-' in filenames.<br>
<br>
<h2>Simplified filenames</h2>
The main advantage of using the simplified names is the aesthetics of simple naming!<br>
<br>
In practice, I don't think there is any problem with the files getting
mixed up with the wrong ones. Normally, a frugal installation places
files into a sub-directory whose name identifies what build of Puppy it
is. Booting off CD, at first shutdown when it is offered to copy .sfs
files off the CD to HD, they are now copied into a sub-directory.<br>
<br>
Something to think about... Neither vmlinuz nor initrd.gz have
versioning information in the filenames, yet they are specific to that
build of Puppy. So, in what way is it any more difficult or
inconvenient for the .sfs files to be named in the same non-versioned
way? <br>
<br>
The simplified names are currently there for experimental builds, to
get some hands-on whether we like them. They are expected to be in Quirky 1.3.<br>
<br>
<h2>DISTRO_SPECS file</h2>
The Woof '3builddistro' script (or checkbox in the 'woof_gui' GUI) enables to choose simplified or traditional filenames.<br>
<br>
Whichever is chosen, the names are stored in the built Puppy, in /etc/DISTRO_SPECS. For example:<br>
<br>
<span style="font-style: italic;">DISTRO_IDSTRING='w091100916185403'</span><br style="font-style: italic;"><span style="font-style: italic;">
DISTRO_PUPPYSFS='wary_091.sfs'</span><br style="font-style: italic;"><span style="font-style: italic;">
DISTRO_ZDRVSFS='zw091335.sfs'</span><br>
<br>
So, any script that wants to know what the names are can read these variables.<br>
<br>
Woof 3builddistro also copies DISTRO_SPECS into the initrd.gz, so that the 'init' script can see what files to search for.<br>
<br>
However, in a running Puppy, you can find out the filenames in the way
that scripts have done before, by reading 'PUPSFS' and 'ZDRV' variables
in /etc/rc.d/PUPSTATE.<br>
<br>
In fact, to clarify the difference between these two sets of variables, I have put this comment into /etc/DISTRO_SPECS:<br>
<br>
<span style="font-style: italic;">#Note, the .sfs files below are what the 'init' script in initrd.gz searches for,</span><br style="font-style: italic;">
<span style="font-style: italic;">#for the partition, path and actual files loaded, see PUPSFS and ZDRV in /etc/rc.d/PUPSTATE</span><br>
<br>
<h2>Postscript</h2>
The bottom line is that if you build Puppy with the traditional names,
then effectively everything is as before. The only thing really that
developers and users have to be aware of (perhaps) is the reversion
from '-' to '_'.<br>
<br>
Under the hood though, the 'init' script is more efficient at finding
the Puppy files, based on the id-string appended to 'vmlinuz'.<br>
<br>
On the otherhand, if you build with the new names, everything should
still "just work", but some 3rd-party scripts may need to be updated.<br>
<br>
Regards,<br>
Barry Kauler<br>
Sept. 2010<br>
<br>
</body></html>